Modules এবং ModuleLayer Java 9-এ Java Platform Module System (JPMS) এর অংশ হিসেবে অন্তর্ভুক্ত করা হয়েছে। এটি Java অ্যাপ্লিকেশনগুলির মধ্যে একটি মডুলার আর্কিটেকচার প্রবর্তন করে এবং একটি অ্যাপ্লিকেশনের বিভিন্ন অংশগুলিকে আলাদা মডিউলে বিভক্ত করার জন্য সহায়তা করে। মডিউল ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশনের কম্পোনেন্টগুলোকে আরও সুসংগঠিত এবং ব্যবস্থাপনা সহজ করতে পারেন।
Module System এর ভূমিকা:
Java 9 থেকে Java Platform Module System (JPMS) পরিচিত হয়েছে, যার মাধ্যমে একটি নতুন মডুলার আর্কিটেকচার তৈরি করা হয়েছে যা আপনার Java অ্যাপ্লিকেশনকে ছোট, পুনঃব্যবহারযোগ্য এবং আংশিকভাবে পৃথক মডিউলে ভাগ করতে সাহায্য করে। এটি অ্যাপ্লিকেশনগুলির নির্ভরতাগুলি স্পষ্টভাবে ডিফাইন করার পাশাপাশি, অ্যাপ্লিকেশনের নিরাপত্তা এবং পারফরম্যান্স বৃদ্ধি করে।
Module এবং ModuleLayer এর ভূমিকা:
- Module:
- Module হল একটি ইউনিট যা ক্লাস, প্যাকেজ, এবং সংস্থানগুলো ধারণ করে এবং এর মধ্যে নির্দিষ্ট অ্যাক্সেস কন্ট্রোল থাকে।
- একটি module ক্লাস, প্যাকেজ, রিসোর্স, এবং অন্যান্য মডিউলগুলির মধ্যে নির্ভরতাগুলি নির্দিষ্ট করে।
- মডিউল একটি module-info.java ফাইলের মাধ্যমে ঘোষণা করা হয়, যেখানে মডিউলের নাম এবং এর নির্ভরতা সম্পর্কে তথ্য থাকে।
- ModuleLayer:
- ModuleLayer হল একটি নতুন কনসেপ্ট Java 9 এর পরে, যা মডিউলগুলোকে logical layers-এ বিভক্ত করে।
- এটি module graph তৈরি করে, যা মডিউলগুলোর মধ্যে সম্পর্ক নির্ধারণ করে।
- ModuleLayer মডিউলগুলোর একত্রিত হওয়ার প্রক্রিয়াকে নিয়ন্ত্রণ করে, মডিউলগুলোর মধ্যে নির্ভরতা পরীক্ষা করে এবং মডিউললোডিং এর সময় নির্ধারণ করে।
Module তৈরি এবং ম্যানেজমেন্ট:
Java 9-এ মডিউল তৈরি এবং ম্যানেজমেন্টের জন্য module-info.java ফাইল ব্যবহার করা হয়। এটি একটি বিশেষ ধরনের ফাইল যা মডিউলের নাম, তার নির্ভরতাগুলি, এবং এক্সপোর্ট করা প্যাকেজগুলির তালিকা নির্ধারণ করে।
Module তৈরি করার ধাপ:
- Module Declaration (module-info.java):
- মডিউল তৈরি করতে প্রথমে module-info.java ফাইল তৈরি করতে হয়, যেখানে মডিউল সম্পর্কিত তথ্য নির্ধারণ করা হয়।
module-info.java ফাইলের উদাহরণ:
// module-info.java
module my.module {
requires java.base; // Dependency on java.base module
exports com.myapp; // Export the package com.myapp
}
ব্যাখ্যা:
module my.module {}: এটি একটি মডিউল ডিক্লেয়ারেশন, যেখানেmy.moduleহল মডিউলের নাম।requires: এটি নির্দেশ করে যে এই মডিউলটি অন্য কোনো মডিউল (যেমনjava.base) এর উপর নির্ভরশীল।exports: এটি মডিউলের প্যাকেজগুলিকে অ্যাক্সেসযোগ্য করে তোলে। শুধুমাত্র যেই প্যাকেজগুলোexportsকরা হয়, সেই প্যাকেজগুলো অন্য মডিউল থেকে অ্যাক্সেস করা যাবে।
- Module Definition:
- মডিউল তৈরি হওয়ার পর, আপনি তার প্যাকেজ এবং ক্লাসগুলোকে ব্যবহার করে কোড লিখতে পারেন। মডিউল এবং এর প্যাকেজগুলির মধ্যে নির্ভরতাগুলি
module-info.javaফাইলে ডিফাইন করা থাকবে।
- মডিউল তৈরি হওয়ার পর, আপনি তার প্যাকেজ এবং ক্লাসগুলোকে ব্যবহার করে কোড লিখতে পারেন। মডিউল এবং এর প্যাকেজগুলির মধ্যে নির্ভরতাগুলি
Compiling the Module:
- মডিউলটি কম্পাইল করতে, আপনি javac কমান্ড ব্যবহার করতে পারেন এবং
module-info.javaফাইলটিকে আপনার কোডের সাথে একত্রিত করতে হবে।
উদাহরণ:
javac -d mods/my.module my/module/com/myapp/*.java my/module/module-info.java- মডিউলটি কম্পাইল করতে, আপনি javac কমান্ড ব্যবহার করতে পারেন এবং
Running the Module:
- মডিউল রান করার জন্য java কমান্ড ব্যবহার করতে হবে এবং মডিউলের ক্লাসপাথ সেট করতে হবে।
উদাহরণ:
java --module-path mods -m my.module/com.myapp.MainClass
ModuleLayer এর ব্যবহার:
ModuleLayer মডিউলগুলোর মধ্যে সম্পর্ক ব্যবস্থাপনা এবং তাদের লোডিং নিয়ন্ত্রণ করার জন্য ব্যবহৃত হয়। এটি মূলত মডিউলগুলোর মধ্যে লোডিং এবং এক্সিকিউশনের জন্য একটি লজিক্যাল লেয়ার তৈরি করে।
ModuleLayer উদাহরণ:
import java.lang.module.ModuleLayer;
import java.lang.module.ModuleFinder;
import java.nio.file.Paths;
public class ModuleLayerExample {
public static void main(String[] args) {
// ModuleFinder used to locate modules in the directory
ModuleFinder finder = ModuleFinder.of(Paths.get("path/to/modules"));
// Create the module layer
ModuleLayer layer = ModuleLayer.boot(); // Load the boot layer (default system modules)
// Optionally, add custom layers if needed
ModuleLayer.Controller controller = ModuleLayer.defineModulesWithOneLoader(
finder, ClassLoader.getSystemClassLoader()
);
// Displaying modules in the layer
layer.modules().forEach(module -> System.out.println(module.getName()));
}
}
ব্যাখ্যা:
ModuleFinderমডিউল লোডারের সাথে ব্যবহৃত হয়, যাতে আপনি মডিউলগুলি একটি নির্দিষ্ট ডিরেক্টরি থেকে খুঁজে পেতে পারেন।ModuleLayer.boot()মেথড ব্যবহার করে ডিফল্ট মডিউল লেয়ার তৈরি করা হয়, যা সিস্টেম মডিউলস অন্তর্ভুক্ত করে।ModuleLayer.defineModulesWithOneLoader()মেথড ব্যবহার করে আপনি নিজের কাস্টম মডিউল লেয়ার তৈরি করতে পারেন।
Module System এর সুবিধা:
- Encapsulation:
- মডিউল সিস্টেমের মাধ্যমে অ্যাপ্লিকেশনগুলির ভেতরের বাস্তবায়ন লুকানো যায়, শুধুমাত্র প্রয়োজনীয় অংশগুলি এক্সপোজ করা হয়।
- Reliability:
- মডিউল সিস্টেম আপনাকে নির্ভরতাগুলি স্পষ্টভাবে ডিফাইন করতে সহায়তা করে, ফলে কোডের এক্সপ্লোরেশন এবং ডিপেনডেন্সি চেকিং সহজ হয়ে যায়।
- Maintainability:
- বড় অ্যাপ্লিকেশনগুলিতে কোডের পৃথক অংশগুলো মডিউলে ভাগ করে রাখা যায়, যা মেইন্টেনেন্স সহজ করে এবং ডেভেলপমেন্টে দ্রুততা আনে।
- Security:
- মডিউল সিস্টেম নিরাপত্তা বৃদ্ধির জন্য প্রতিটি মডিউলে নির্দিষ্ট অ্যাক্সেস কন্ট্রোল প্রদান করে।
- Performance:
- মডিউল সিস্টেম দ্বারা আপনি কোডের নির্দিষ্ট অংশগুলো শুধুমাত্র যখন প্রয়োজন হয় তখনই লোড করতে পারেন, ফলে পারফরম্যান্স বাড়ে।
Java Modules এবং ModuleLayer Java 9 থেকে একটি নতুন ক্ষমতা হিসেবে এসেছে, যা Java অ্যাপ্লিকেশনগুলির উন্নয়ন এবং ব্যবস্থাপনায় শক্তিশালী ভূমিকা রাখে। মডিউল সিস্টেমের মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনটি ছোট, পুনঃব্যবহারযোগ্য, এবং সুসংগঠিত রাখতে পারেন। এটি নিরাপত্তা, পারফরম্যান্স এবং মেইন্টেন্যান্সের জন্যও অনেক সুবিধা প্রদান করে। module-info.java ফাইলের মাধ্যমে মডিউল তৈরি এবং ম্যানেজমেন্ট করা যায়, যা অ্যাপ্লিকেশন ডেভেলপমেন্টকে আরও সুসংগঠিত ও সুরক্ষিত করে।
Read more